package com.atguigu.gmall.order.service;

import com.atguigu.gmall.model.order.OrderInfo;

/**
 *
 * 订单管理 service接口
 * @author : zjj
 * @date : 2021/2/5 15:11
 */
public interface OrderService {
    /**
     * 保存订单
     * @param orderInfo 订单信息
     * @return          主键
     */
    Long saveOrderInfo(OrderInfo orderInfo);

    /**
     * 生成流水号
     * @param userId    用户Id
     * @return          流水号
     */
    String getTradeNo(String userId);

    /**
     * 比较流水号
     * @param tradeCodeNo   页面提交的流水号
     * @param userId        用户id
     * @return              比较结果
     */
    Boolean checkTradeCode(String tradeCodeNo ,String userId);

    /**
     * 删除流水号
     * @param userId    用户id
     */
    void deleteTradeNo(String userId);

    /**
     * 验证库存
     * @param skuId     skuId
     * @param skuNum    商品数量
     * @return          结果
     */
    Boolean checkStock(Long skuId ,Integer skuNum);

    /**
     * 根据订单id，查询订单详情
     * @param orderId   订单id
     * @return          订单详情
     */
    OrderInfo getOrderInfo(Long orderId);

}
